'use strict'
const webpack = require('webpack')
const path = require('path')
const pack = require('./package.json')

function resolve(dir) {
  return path.join(__dirname, dir)
}
const name = pack.name
const port = 8085

module.exports = {
  publicPath: '/',
  outputDir: 'dist', //生产环境构建文件的目录
  assetsDir: 'static', //静态资源
  // 存放index.html模板的路径
  indexPath: 'index.html',
  lintOnSave: true,
  productionSourceMap: false,
  configureWebpack: {
    // alias @ to src
    name: name,
    resolve: {
      alias: {
        '@': resolve('src'),
      }
    },
    plugins: [
      //引入jquery
      // new webpack.ProvidePlugin({
      //   $:"jquery",
      //   jQuery:"jquery",
      //   "windows.jQuery":"jquery"
      // })
    ],

  },
  chainWebpack: config => {
    // 设置title名字
    config
      .plugin('html')
      .tap(args => {
        args[0].title = '视联网存储服务系统'
        return args
      })
    // 压缩图片
    const imagesRule = config.module.rule('images')
    imagesRule.uses.clear()
    imagesRule.use('file-loader')
      .loader('url-loader')
      .options({
        limit: 10240,
        fallback: {
          loader: 'file-loader',
          options: {
            outputPath: 'static/images'
          }
        }
      })


  },
  devServer: {
    port: port,
    open: false,
    overlay: {
      warnings: false,
      errors: true
    },
    //before: require('./mock/mock-server.js'),
    proxy: {
      '/': { 
        target: 'http://10.1.54.218:8080', // 代理目标的基础路径
        changeOrigin: true, // 支持跨域
      },
    }
  },
  css: {
    extract: true,
    sourceMap: false,
    loaderOptions: {

    },
    // 适配
    loaderOptions: {
      postcss: {
        plugins: [
          require('postcss-plugin-px2rem')({
            rootValue: 75, // 设置转换基数，会自动根据该 基数进行rem值转换，如设置75，页面写入高度175px 则== 1775/75rem,该值通常根据设计稿等分数进行计算，使用淘宝方案等分就是10份
            mediaQuery: false, //（布尔值）允许在媒体查询中转换px。
            minPixelValue: 3, //设置要替换的最小像素值(3px会被转rem)。 默认 0
            exclude: /(node_module)/, // 排除指定的包，不对其进行转换，通常用于指定第三方包，默认为false
          }),
        ]
      }
    }
  },
  // configureWebpack: config => {
  // // 公共代码抽离
  //   config.optimization = {
  //     splitChunks: {
  //       cacheGroups: {
  //         vendor: {
  //           chunks: 'all',
  //           test: /node_modules/,
  //           name: 'vendor',
  //           minChunks: 1,
  //           maxInitialRequests: 5,
  //           minSize: 0,
  //           priority: 100
  //         }
  //       }
  //     }
  //   }
  //   // 去除console.log
  //   if (process.env.NODE_ENV === 'production') {
  //     config.plugins.push(
  //         new TerserPlugin({
  //           terserOptions: {
  //             ecma: undefined,
  //             warnings: false,
  //             parse: {},
  //             compress: {
  //               drop_console: true,
  //               drop_debugger: false,
  //               pure_funcs: ['console.log'] // 移除console
  //             }
  //           }
  //         })
  //       )
  // }
  // }
}